import os

basedir = os.path.abspath(os.path.dirname(__file__))


class Config:
    SECRET_KEY = "8caec07f-cd1f-47b9-bb41-2bd650fdb89b"
    SQLALCHEMY_POOL_SIZE = 500  # 数据库连接池的大小。默认是引擎默认值（通常 是 5 ），此处最重要。
    SQLALCHEMY_POOL_TIMEOUT = 5  # 指定数据库连接池的超时时间。默认是10s。
    SQLALCHEMY_POOL_RECYCLE = 1700  # 配置连接池的 recyle 时间。默认是7200s。
    SQLALCHEMY_ECHO = False  # 打印sql语句
    OUSI_POSTS_PER_PAGE = 100
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    FLASKY_DB_QUERY_TIMEOUT = 0.1  # 设置sql执行超时时间 0.1s
    SQLALCHEMY_RECORD_QUERIES = False  # 启用慢查询记录功能
    BABEL_DEFAULT_LOCALE = 'zh_CN'  # 后台管理语言

    BASEDIR = basedir

    MAX_CONTENT_LENGTH = 200 * 1024 * 1024

    REDIS_HOST = os.environ.get('REDIS_HOST', "127.0.0.1")
    REDIS_PORT = 6379

    DB_DATABASE = os.environ.get('DB_DATABASE', 'cetacean')
    DB_HOST = os.environ.get('DB_HOST', '127.0.0.1')
    DB_PORT = os.environ.get('DB_PORT', 5432)

    SQLALCHEMY_DATABASE_URI = f'postgresql://postgres:postgres@{DB_HOST}:{DB_PORT}/{DB_DATABASE}'


    LOG_FILE_MAX_BYTES = 100 * 1024 * 1024
    LOG_FILE_BACKUP_COUNT = 10  # 轮转数量是 10 个

    ENV_TYPE = os.environ.get('ENV_TYPE', "development")

    @staticmethod
    def init_app(app):
        pass


class DevelopmentConfig(Config):
    DEBUG = os.environ.get('DEBUG', True)
    SQLALCHEMY_TRACK_MODIFICATIONS = False


class ProductionConfig(Config):
    DEBUG = False
    SQLALCHEMY_ECHO = False


config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig
}
